home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / GMS / GMSDev / Includes / sound / sound.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-10  |  4.3 KB  |  177 lines

  1. #ifndef SOUND_SOUND_H
  2. #define SOUND_SOUND_H TRUE
  3.  
  4. /*
  5. **    $VER: sound.h V1.0
  6. **
  7. **    Sound definitions.
  8. **
  9. **    (C) Copyright 1996-1998 DreamWorld Productions.
  10. **        All Rights Reserved
  11. */
  12.  
  13. #ifndef DPKERNEL_H
  14. #include <dpkernel/dpkernel.h>
  15. #endif
  16.  
  17. /*****************************************************************************
  18. ** Sound object.
  19. */
  20.  
  21. #define VER_SOUND  1
  22. #define TAGS_SOUND ((ID_SPCTAGS<<16)|ID_SOUND)
  23.  
  24. struct Sound {
  25.   struct Head Head;    /* [00] Standard structure header */
  26.   WORD   emp;          /* [12] */
  27.   WORD   Priority;     /* [14] Priority */
  28.   APTR   Data;         /* [16] Address of sample data */
  29.   LONG   Length;       /* [20] Length of sample data in bytes */
  30.   WORD   Octave;       /* [24] Octave/Note setting */
  31.   WORD   Volume;       /* [26] Volume of sample (0 - 100) */
  32.   LONG   Attrib;       /* [28] Sound attributes */
  33.   BYTE   *Source;      /* [32] File for the sound, if required */
  34.   LONG   Frequency;    /* [36] Frequency of sampled sound */
  35.   struct Sound *Pair;  /* [40] Pair a sound for modulation */
  36.  
  37.   /*** Private fields below ***/
  38.  
  39.   APTR   prvHeader;      /* Ptr to sample info header, if any */
  40.   BYTE   prvAFlags;      /* Allocation flags */
  41.   BYTE   prvPad;         /* Private */
  42.   WORD   prvLastChannel; /* Last channel to play through */
  43. };
  44.  
  45. #define SA_Priority  (14|TWORD)
  46. #define SA_Data      (16|TAPTR)
  47. #define SA_Length    (20|TLONG)
  48. #define SA_Octave    (24|TWORD)
  49. #define SA_Volume    (26|TWORD)
  50. #define SA_Attrib    (28|TAPTR)
  51. #define SA_Source    (32|TAPTR)
  52. #define SA_Frequency (36|TLONG)
  53. #define SA_Pair      (40|TAPTR)
  54.  
  55. /*** Flags for Attrib ***/
  56.  
  57. /*#define SDF_BIT8   0x00000000       Sound data is 8 bit */
  58. /*#define SDF_BIT16  0x00000001       Sound data is 16 bit */
  59. #define SDF_MODVOL   0x00000002    /* Modulate volume with next channel */
  60. #define SDF_MODPER   0x00000004    /* Modulate period with next channel */
  61. #define SDF_REPEAT   0x00000008    /* Repeat sample forever */
  62. #define SDF_EMPTY    0x00000010    /* Only play sound if channel is empty */
  63. #define SDF_LEFT     0x00000020    /* Left speaker preferred */
  64. #define SDF_RIGHT    0x00000040    /* Right speaker preferred */
  65. #define SDF_FORCE    0x00000080    /* Enforce use of selected speaker */
  66. #define SDF_STOPLAST 0x00000100    /* Play sound only on given channel */
  67.  
  68. /*****************************************************************************
  69. ** Octave definitions for Sound->Octave.  An 'S' at the end of an octave
  70. ** definition indicates a sharp note.
  71. */
  72.  
  73. #define OCT_G0S  0
  74. #define OCT_G0   2
  75. #define OCT_F0S  4
  76. #define OCT_F0   6
  77. #define OCT_E0   8
  78. #define OCT_D0S 10
  79. #define OCT_D0  12
  80. #define OCT_C0S 14
  81. #define OCT_C0  16
  82. #define OCT_B0  18
  83. #define OCT_A0S 20
  84. #define OCT_A0  22
  85.  
  86. #define OCT_G1S 24
  87. #define OCT_G1  26
  88. #define OCT_F1S 28
  89. #define OCT_F1  30
  90. #define OCT_E1  32
  91. #define OCT_D1S 34
  92. #define OCT_D1  36
  93. #define OCT_C1S 38
  94. #define OCT_C1  40
  95. #define OCT_B1  42
  96. #define OCT_A1S 44
  97. #define OCT_A1  46
  98.  
  99. #define OCT_G2S 48
  100. #define OCT_G2  50
  101. #define OCT_F2S 52
  102. #define OCT_F2  54
  103. #define OCT_E2  56
  104. #define OCT_D2S 58
  105. #define OCT_D2  60
  106. #define OCT_C2S 62
  107. #define OCT_C2  64
  108. #define OCT_B2  66
  109. #define OCT_A2S 68
  110. #define OCT_A2  70
  111.  
  112. #define OCT_G3S 72
  113. #define OCT_G3  74
  114. #define OCT_F3S 76
  115. #define OCT_F3  78
  116. #define OCT_E3  80
  117. #define OCT_D3S 82
  118. #define OCT_D3  84
  119. #define OCT_C3S 86
  120. #define OCT_C3  88
  121. #define OCT_B3  90
  122. #define OCT_A3S 92
  123. #define OCT_A3  94
  124.  
  125. #define OCT_G4S 96
  126. #define OCT_G4  98
  127. #define OCT_F4S 100
  128. #define OCT_F4  102
  129. #define OCT_E4  104
  130. #define OCT_D4S 106
  131. #define OCT_D4  108
  132. #define OCT_C4S 110
  133. #define OCT_C4  112
  134. #define OCT_B4  114
  135. #define OCT_A4S 116
  136. #define OCT_A4  118
  137.  
  138. #define OCT_G5S 120
  139. #define OCT_G5  122
  140. #define OCT_F5S 124
  141. #define OCT_F5  126
  142. #define OCT_E5  128
  143. #define OCT_D5S 130
  144. #define OCT_D5  132
  145. #define OCT_C5S 134
  146. #define OCT_C5  136
  147. #define OCT_B5  138
  148. #define OCT_A5S 140
  149. #define OCT_A5  142
  150.  
  151. #define OCT_G6S 144
  152. #define OCT_G6  146
  153. #define OCT_F6S 148
  154. #define OCT_F6  150
  155. #define OCT_E6  152
  156. #define OCT_D6S 154
  157. #define OCT_D6  156
  158. #define OCT_C6S 158
  159. #define OCT_C6  160
  160. #define OCT_B6  162
  161. #define OCT_A6S 164
  162. #define OCT_A6  166
  163.  
  164. #define OCT_G7S 168
  165. #define OCT_G7  170
  166. #define OCT_F7S 172
  167. #define OCT_F7  174
  168. #define OCT_E7  176
  169. #define OCT_D7S 178
  170. #define OCT_D7  180
  171. #define OCT_C7S 182
  172. #define OCT_C7  184
  173. #define OCT_B7  186
  174. #define OCT_A7S 188
  175.  
  176. #endif /* SOUND_SOUND_H */
  177.